最後一天,要把我們的成品部署上去拉
我選擇的是 fly.io
部署非常方便,比很多部署平台都還容易部署,不過需要懂一點 Docker
不懂的話怎麼辦?沒關係,他可以自動生成 Dockerfile
那我們就開始吧
跟著官網的指令做,要部署新的應用程式時,用以下指令
> fly launch
Creating app in .../ishop
Scanning source code
Detected a Rails app
接著你需要輸入應用程式名稱
? Choose an app name (leave blank to generate one): ishop
輸入玩按 enter
就會請你選擇伺服器位置
這裡我選了日本東京,選完後一樣按 enter
automatically selected personal organization: Ning
Some regions require a paid plan (bom, fra, maa).
See https://fly.io/plans to set up a plan.
? Choose a region for deployment: [Use arrows to move, type to filter]
> Tokyo, Japan (nrt)
接著就會問你要不要以 Postgresql 為資料庫
我習慣用 PG ,所以會輸入 y
接著會問你要選擇多少容量(選擇適合你專案的容量,但也要看一下價錢)
Select configuration: [Use arrows to move, type to filter]
Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
> Production (High Availability) - 3 nodes, 2x shared CPUs, 4GB RAM, 40GB disk
Production (High Availability) - 3 nodes, 4x shared CPUs, 8GB RAM, 80GB disk
系統會問在一小時後希望將 PG 縮放至零(停止)
如果目前不打算運行且希望節省資源,可以選擇 y
但如果希望立即運行此專案,則應選擇 N
, 確保 PG 保持運行
Scale single node pg to zero after one hour? (y/N) N
Creating postgres cluster in organization personal
Creating app...
Setting secrets on app ishop-db...
Provisioning 1 of 1 machines with image flyio/postgres-flex:15.3@sha256:5e5fc53decb051f69b0850f0f5d137c92343fcd1131ec413015e5260620947ac
Waiting for machine to start...
再來會問你需不需要用 Redis ,我的專案目前沒有使用到 Redis ,所以就輸入 N
Would you like to set up an Upstash Redis database now? (y/N) N
接著就會幫我們生出 docker 容器化所需要的檔案
Writing lockfile to .../Side Project/ishop/Gemfile.lock
create Dockerfile
create .dockerignore
create bin/docker-entrypoint
create config/initializers/sentry.rb
create config/dockerfile.yml
Wrote config file fly.toml
...
Your Rails app is prepared for deployment.
...
接下來我們就可以部署了
> fly deploy
接著就會開始 build docker image 並且 push 到 fly.io
跑完的時候會告訴你有沒有成功
沒有成功要看一下錯誤訊息是什麼,去修正
fly.io 相較其他部署平台,變得更容易部署了
基本上沒什麼問題應該都可以一兩次修正後就部署成功
看到下方這個訊息就代表成功了
✔ Machine xxxxxxx [app] update finished: success
fly.io 設定環境變數的方式很簡單,用指令就可以設定好了
flyctl secrets set AMAZON_ACCESS_KEY=XXXXXX
基本上就部署完成囉!
趕快去把你的網站丟給朋友玩看看吧